package cn.aku.d3_list;

import org.junit.Test;

import java.io.File;
import java.util.Deque;
import java.util.LinkedList;
import java.util.Queue;

public class TestOQ {

    @Test
    /*
    测试Queue
    队列
     */
    public void test1(){
        Queue<String> que=new LinkedList<>();
        que.offer("java");
        que.offer("c++");
        que.offer("python");
        System.out.println(que);

        String str=que.poll();//移除该元素
        System.out.println(str);

        System.out.println(que);
    }

    /*
     测试栈 Deque
     先进后出
     push()入栈
     pop()出栈
     peek()查看栈首是否有元素
     */
    @Test
    public void test2(){
        Deque<String> stack=new LinkedList<>();
        stack.push("android");
        stack.push("java");
        stack.push("python");
        System.out.println(stack);
    }

    /**
     * 文件操作都是通过递归
     * 不用递归，也可以使用栈操作
     * 删除非空文件架(目录)
     */
    @Test
    public void test3(){
        File f=new File("E:\\666");
        Deque<File> stack=new LinkedList<>();
        //遍历目录，是文件删除，是目录存入栈
        File[] files=f.listFiles();
        for (File f1:files) {
            if(f1.isDirectory()){
                stack.push(f1);
            }else {
                f1.delete();
            }
        }
        while (stack.size()>0){
            File ff=stack.poll();//出栈
            File[] files2=ff.listFiles();
            for (File f2:files2) {
                if(f2.isDirectory()){
                    //加入栈
                    stack.push(f2);
                }else {
                    //文件直接删除
                    f2.delete();
                }
            }
            ff.delete();
        }
        f.delete();
        System.out.println("删除完毕");

    }
}
